Newer
Older
TheVengeance-Project-IADE-Unity2D / Assets / Scripts / UI / Pause Menu / PauseMenu.cs
using MyCollections.Managers;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Xml.Serialization;
using UnityEngine;
using UnityEngine.SceneManagement;

public class PauseMenu : MonoBehaviour
{
    private GameStateManager gameStateManager;
    [SerializeField] private GameObject[] buttonsGroup;
    [SerializeField] private GameObject settingsPanel;
    [SerializeField] private HUDManager hudManager;

    private PauseMenuState currentState;

    public void Exit()
    {
        SceneManager.LoadScene("MainMenu");
    }

    //Resumes the game
    private void Resume()
    {
        gameStateManager.ResumeGame();
        gameObject.SetActive(false);
    }

    //Open Settings Menu
    private void OpenSettings()
    {
        settingsPanel.SetActive(true);
    }

    private void OnEnable()
    {
        gameObject.SetActive(true);
        gameStateManager = GameStateManager.Instance;
        SetState(PauseMenuState.None);
    }

    private void OnDisable()
    {
        hudManager.SetHUDMode(HUDMode.None);
    }

    public void ToggleSettings()
    {
        if (currentState != PauseMenuState.Settings)
        {
            SetState(PauseMenuState.Settings);
        }

        else
        {
            SetState(PauseMenuState.None);
        }
    }

    private void SetState(PauseMenuState state)
    {
        ClearMenuHUD();

        switch (state)
        {
            case PauseMenuState.None:
                OpenMenuOptions();
                break;

            case PauseMenuState.Settings:
                OpenSettings();
                break;
        }

        currentState = state;
    }

    private void OpenMenuOptions()
    {
        for (int i = 0; i < buttonsGroup.Length; i++)
        {
            buttonsGroup[i].gameObject.SetActive(true);
        }
    }

    private void ClearMenuHUD()
    {
        for (int i = 0; i < buttonsGroup.Length; i++)
        {
            buttonsGroup[i].gameObject.SetActive(false);
        }

        settingsPanel.SetActive(false);
    }

    [Serializable]
    public enum PauseMenuState
    {
        None,
        Settings
    }
}